<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 全局作用域
        let a = 1
        let b = 1
        function f() {
            // 局部作用域
            let a = 1
            function g() {
                // 局部作用域
                a = 2
                console.log(a)
            }
            g() // 调用g
        }
        f() // 调用f

        // 什么是作用域链
        // 函数是可以嵌套函数的，每个函数都有一个局部作用域，这样子，也会形成作用域的嵌套
        // 当访问内层函数作用域中的某个变量的时候，首先在当前作用域中查找这个变量，如果不存在，往上层查找，直到全局作用域

        // ==> 由于变量的查找是沿着作用域链来实现的，也称作用域链为变量的查找机制
        // 作用域链的本质：底层变量的查找机制

        // 查找规则：
        // 1. 先在当前作用域中查找变量
        // 2. 如果不存在，往上层作用域中查找，直到全局作用域
    </script>
</body>

</html>